// 进程与系统模块中文封装
const process = require('process');
const os = require('os');

/**
 * 获取当前工作目录
 * @returns {string} 当前工作目录路径
 */
function 获取当前工作目录() {
  return process.cwd();
}

/**
 * 更改当前工作目录
 * @param {string} 目录路径 - 要切换到的目录路径
 */
function 更改工作目录(目录路径) {
  return process.chdir(目录路径);
}

/**
 * 获取环境变量
 * @param {string} 变量名 - 环境变量名
 * @returns {string} 环境变量值
 */
function 获取环境变量(变量名) {
  return process.env[变量名];
}

/**
 * 设置环境变量
 * @param {string} 变量名 - 环境变量名
 * @param {string} 变量值 - 环境变量值
 */
function 设置环境变量(变量名, 变量值) {
  process.env[变量名] = 变量值;
}

/**
 * 获取所有环境变量
 * @returns {Object} 环境变量对象
 */
function 获取所有环境变量() {
  return process.env;
}

/**
 * 退出进程
 * @param {number} 退出码 - 退出码，默认为0
 */
function 退出进程(退出码 = 0) {
  process.exit(退出码);
}

/**
 * 获取命令行参数
 * @returns {string[]} 命令行参数数组
 */
function 获取命令行参数() {
  return process.argv;
}

/**
 * 获取Node.js版本
 * @returns {string} Node.js版本号
 */
function 获取Node版本() {
  return process.version;
}

/**
 * 获取平台信息
 * @returns {string} 平台信息（'darwin', 'win32', 'linux'等）
 */
function 获取平台() {
  return process.platform;
}

/**
 * 获取处理器架构
 * @returns {string} 处理器架构
 */
function 获取架构() {
  return process.arch;
}

/**
 * 获取内存使用情况
 * @returns {Object} 内存使用情况对象
 */
function 获取内存使用情况() {
  return process.memoryUsage();
}

/**
 * 获取CPU使用情况
 * @returns {Object[]} CPU使用情况数组
 */
function 获取CPU使用情况() {
  return os.cpus();
}

/**
 * 获取系统总内存
 * @returns {number} 系统总内存（字节）
 */
function 获取总内存() {
  return os.totalmem();
}

/**
 * 获取系统空闲内存
 * @returns {number} 系统空闲内存（字节）
 */
function 获取空闲内存() {
  return os.freemem();
}

/**
 * 获取操作系统类型
 * @returns {string} 操作系统类型
 */
function 获取操作系统类型() {
  return os.type();
}

/**
 * 获取操作系统版本
 * @returns {string} 操作系统版本
 */
function 获取操作系统版本() {
  return os.release();
}

/**
 * 获取主机名
 * @returns {string} 主机名
 */
function 获取主机名() {
  return os.hostname();
}

/**
 * 获取网络接口信息
 * @returns {Object} 网络接口信息对象
 */
function 获取网络接口() {
  return os.networkInterfaces();
}

/**
 * 获取临时目录路径
 * @returns {string} 临时目录路径
 */
function 获取临时目录() {
  return os.tmpdir();
}

/**
 * 获取用户信息
 * @returns {Object} 当前用户信息
 */
function 获取用户信息() {
  return os.userInfo();
}

/**
 * 获取正常运行时间
 * @returns {number} 系统正常运行时间（秒）
 */
function 获取正常运行时间() {
  return os.uptime();
}

/**
 * 杀死进程
 * @param {number} 进程ID - 要杀死的进程ID
 * @param {string|number} 信号 - 发送的信号，默认为'SIGTERM'
 */
function 杀死进程(进程ID, 信号 = 'SIGTERM') {
  return process.kill(进程ID, 信号);
}

/**
 * 添加进程事件监听器
 * @param {string} 事件名 - 事件名称
 * @param {Function} 回调函数 - 事件回调函数
 */
function 监听进程事件(事件名, 回调函数) {
  process.on(事件名, 回调函数);
}

/**
 * 移除进程事件监听器
 * @param {string} 事件名 - 事件名称
 * @param {Function} 回调函数 - 要移除的回调函数
 */
function 移除进程事件监听(事件名, 回调函数) {
  process.off(事件名, 回调函数);
}

/**
 * 获取CPU核心数
 * @returns {number} CPU核心数
 */
function 获取CPU核心数() {
  return os.cpus().length;
}

module.exports = {
  获取当前工作目录,
  更改工作目录,
  获取环境变量,
  设置环境变量,
  获取所有环境变量,
  退出进程,
  获取命令行参数,
  获取Node版本,
  获取平台,
  获取架构,
  获取内存使用情况,
  获取CPU使用情况,
  获取总内存,
  获取空闲内存,
  获取操作系统类型,
  获取操作系统版本,
  获取主机名,
  获取网络接口,
  获取临时目录,
  获取用户信息,
  获取正常运行时间,
  杀死进程,
  监听进程事件,
  移除进程事件监听,
  获取CPU核心数
};